/* 
 * File:   arbolint.h
 * Author: Administrador
 *
 * Created on 5 de marzo de 2009, 12:00
 */

#ifndef _ARBOLINT_H
#define	_ARBOLINT_H

#include <iostream>
using std::cout;
using std::endl;

#include <sstream> // Archivo de encabezados para flujos de caracteres.
using std::ostringstream; // Operadores de inserción de flujos.

#include "nodoarbolint.h"

class ArbolInt {
public:
    ArbolInt();
    ArbolInt(const ArbolInt& orig);
    void insertarNodo( const int & );
    void recorridoPreOrden() const;
    void recorridoInOrden(ostringstream &) const;
    void recorridoPostOrden() const;
    bool buscar(const int&);
    virtual ~ArbolInt();
private:
    NodoArbolInt *raizPtr;

    // funciones utilitarias
    void ayudanteInsertarNodo( NodoArbolInt **, const int & );
    void ayudantePreOrden( NodoArbolInt * ) const;
    void ayudanteInOrden( NodoArbolInt *, ostringstream & ) const;
    void ayudantePostOrden( NodoArbolInt * ) const;
    bool buscarAyudante(NodoArbolInt *, const int &);
};
//

#endif	/* _ARBOLINT_H */

